const { join } = require('path')
const fs = require('fs')
const http = require('http')

// 1.通过请求对象来获取，客户端请求的pathname
// 2.让客户端的pathname和服务器中真实存在的文件进行映射
// 3.读取文件内容，响应给客户端

// 网站根目录  url地址中的 / => www目录
const webRoot = join(__dirname, 'www')
    // req 是对象也是流 res是对象也是流
http.createServer((req, res) => {
    if (req.url != '/favicon.ico') {
        // 得到客户请求的pathname，并且做了缺省页的处理
        let pathname = req.url === '/' ? '/index.html' : req.url
            // 得到请求的对象服务器中真实的文件路径
        let filepath = join(webRoot, pathname)
            // 判断文件是否存在，如果不存在则返回404






        if (fs.existsSync(filepath)) { // 文件存在
            // 读取文件并给响应
            res.end(fs.readFileSync(filepath))
        } else {
            let jppathname = req.url = '/404.html';
            let jpfilepath = join(webRoot, jppathname)
            res.statusCode = 404
            res.end(fs.readFileSync(jpfilepath))


        }
    }

}).listen(3000, '0.0.0.0')